Dynagraph Card Data Group
The Modbus EFM EIE "Dynagraph Card" (DynaCard) data group enables the retrieval of dynagraph card data. The XML of each "Dynagraph Card" data group contains a number of data group elements and a number of card blocks. The DataGroupElement elements define data used by CygNet; the card blocks define constraints used to map register data to the data group elements. Your specific needs dictate how you implement this data group.
See the following subsections for more information:
For more information, see CygNet Dynagraph Viewer.
Example
|
<DynaCard niceName="Dynagraph Card" hasArray="true" maxCnt="6"> <dgOrdinals> <e0 value="Current Card"/> <e3 value="Reference Card"/> </dgOrdinals> <dgElements byteOrder="bigEndian" secLev="4" cvtF="WordSwap" type="i4"> <Date desc="Card Raw Date" regDef="1:474" hidden="true"/> <Time desc="Card Raw Timestamp" regDef="1:476" hidden="true"/> <STimeD desc="Surface Card Timestamp" type="r8" cvtRef="TimeEnron" deidDate="Date" deidTime="Time"/> <CardType desc="Card Type"/> <CardDesc desc="Card Description" type="string"/> <SCnt desc="Point Count" type="ui2"/> <SLMax desc="Surface Max Load" type="r4"/> <SLMin desc="Surface Min Load" type="r4"/> <StrkLenRaw desc="Stroke Length Raw" regDef="1:94"/> <StrokeLen desc="Stroke Length" type="r4" ref="StrkLenRaw" scaleFactor=".001" units="in"/> <PSpeedRaw desc="Pump Speed Raw" regDef="1:18"/> <PumpSpeed desc="Pump Speed" type="r4" ref="PSpeedRaw" scaleFactor="0.01"/> <SPRaw desc="Surface Position Raw" regDef="2:0" arrRegOff="2" hidden="true"/> <SP desc="Surface Position" ref="SPRaw" type="r4" scaleFactor=".1"/> <SL desc="Surface Load" regDef="3:0" arrRegOff="2"/> <PumpFill desc="Pump Fillage" regDef="1:16" units="%"/> <FluidLoad desc="Fluid Load" regDef="1:240"/> <DTimeD desc="Downhole Card Timestamp" type="r8" cvtRef="TimeEnron" deidDate="Date" deidTime="Time"/> <DCnt desc="Downhole Point Count" type="ui2"/> <DPRaw desc="Downhole Position Raw" regDef="4:0" arrRegOff="2" hidden="true"/> <DP desc="Downhole Position" ref="DPRaw" type="r4" scaleFactor=".1"/> <DL desc="Downhole Load" regDef="5:0" arrRegOff="2"/> <DLMax desc="Downhole Max Load" type="r4"/> <DLMin desc="Downhole Min Load" type="r4"/> <WellState desc="State of well" regDef="1:44"/> <WStateText desc="Well state text" type="string" ref="WellState" mapVal="WellStat"/> </dgElements> <cardBlocks cardOrdinal="0" surfacePtCount="50" regByteLen="2" funcCode="3" regOff="-40001" txMaxRegCnt="124"> <card cardNum="1" surfacePtCount="200" downholePtCount="200"> <block1 regNum="57201" regCnt="477" cardRep="none"/> <block2 regNum="50001" regCnt="400" cardRep="surface"/> <block3 regNum="50401" regCnt="400" cardRep="surface"/> <block4 regNum="50801" regCnt="400" cardRep="downhole"/> <block5 regNum="51201" regCnt="400" cardRep="downhole"/> </card> <card cardNum="2" cardRep="surface"> <block1 regNum="57201" regCnt="477" cardRep="none"/> <block2 regNum="58401" regCnt="100"/> <block3 regNum="58801" regCnt="100"/> </card> <card cardNum="3" cardRep="surface"> <block1 regNum="57201" regCnt="477" cardRep="none"/> <block2 regNum="58501" regCnt="100"/> <block3 regNum="58901" regCnt="100"/> </card> <card cardNum="4" cardRep="surface"> <block1 regNum="57201" regCnt="477" cardRep="none"/> <block2 regNum="58601" regCnt="100"/> <block3 regNum="59001" regCnt="100"/> </card> <card cardNum="5" cardRep="surface"> <block1 regNum="57201" regCnt="477" cardRep="none"/> <block2 regNum="58701" regCnt="100"/> <block3 regNum="59101" regCnt="100"/> </card> <postCard> <block6 regNum="60000" regCnt="2"/> </postCard> </cardBlocks> <cardBlocks cardOrdinal="3" surfacePtCount="200" downholePtCount="200" regByteLen="2" funcCode="3" regOff="-40001" txMaxRegCnt="124"> <card cardNum="1"> <block1 regNum="57201" regCnt="477" cardRep="none"/> <block2 regNum="52801" regCnt="400" cardRep="surface"/> <block3 regNum="53201" regCnt="400" cardRep="surface"/> <block4 regNum="53601" regCnt="400" cardRep="downhole"/> <block5 regNum="54001" regCnt="400" cardRep="downhole"/> </card> <postCard> <block6 regNum="60000" regCnt="2"/> </postCard> </cardBlocks> <uccRecvParms> <Cnt desc="Card Count" type="ui2" required="false" rangeLow="1" rangeHigh="5"/> <Rep desc="Representation: 0=surface;1=surface+downhole;2=downhole" type="ui2" required="false"/> </uccRecvParms> </DynaCard> |
Structure and Components
|
<deviceDefinition class="POC"> <dataGroups> <DataGroup hasArray="true"> <dgElements> <StrokeLen/> <STimeD/> <SCnt/> <SP/> <SL/> <SLMin/> <SLMax/> <DTimeD/> <DCnt/> <DP/> <DL/> <DLMin/> <DLMax/> </dgElements> <cardBlocks cardOrdinal="" downholePtCount="" funcCode="" regByteLen="" regOff="" surfacePtCount="" txMaxRegCnt=""> <preCard> <block regNum_singleCard="" regNum_multipleCard=""/> </preCard> <card cardNum="" cardRep="" reqType=""> <block cardRep=""/> </card> <postCard> <block regNum_singleCard="" regNum_multipleCard=""/> </postCard> </cardBlocks> <RecParmName/> </uccRecvParms> </DataGroup> </dataGroups> </deviceDefinition> |
To Create a Dynagraph Card Data Group
- Using a text editor or XML editor, open the device template file to which you want to add a dynagraph card data group. You might need to extract the device template file from a Device Definition Service (DDS) in order to edit it.
- In the deviceDefinition element of your template, add the attribute class and set its value to POC. Doing so defines this template as a pump-off controller template.
- Define a DataGroup element for the "Dynagraph Card" data group. Add the attribute hasArray and set its value to true.
- Define a dgElements element that includes all required data group element IDs. StrokeLen is always required. See the examples above for others. Data group element IDs that start with S are required for support of a surface card. Data group element IDs that start with D are required for support of a downhole card.
- Define a cardBlocks element for each card type supported.
- Define the applicable number of card elements for each cardBlocks element.
- Define block elements for each card element.
- If required by your device, define preCard and/or postCard elements.
- If required by your device, define block elements for each preCard and/or postCard element.
- If required by your device, define a uccRecvParms element and child RecParmName element.
- Save your edits.
- Validate the template, then load it to the applicable DDS. See CygNet Device Template Manager Utility.
- From the applicable DDS, poll the affected device to test data retrieval and confirm the data group works as expected.


